package com.shen.JUC.Lock8;

import java.util.concurrent.TimeUnit;

public class Lock2 {
    /*锁的8个问题
    *3.普通方法和同步方法谁先执行
    * 答：h1方法没有锁，不是同步方法，不受锁的影响，所以普通方法先执行
    * 4.两个对象是先执行phone1还是phone2
    * 答：两个对象，两个调用者，两把锁，所以phone2先执行
    * */

    public static void main(String[] args) throws InterruptedException {
        Phone2 phone1 = new Phone2();
        Phone2 phone2 = new Phone2();
        new Thread(()->{
            try {
                phone1.sell();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        },"A").start();
        TimeUnit.SECONDS.sleep(1);
        new Thread(()->{phone2.call();},"B").start();
    }
}

class Phone2{
    public synchronized void sell() throws InterruptedException {
        TimeUnit.SECONDS.sleep(2);
        System.out.println("sell message");
    }
    public synchronized void call(){
        System.out.println("call phone");
    }
    //h1方法没有锁，不是同步方法，不受锁的影响
    public void h1(){
        System.out.println("hello");
    }
}